#!/bin/bash
# -*- coding: UTF-8 -*-
#
#@filename: convert2.sh
#@version: $0.2$
#@date: 2008/06/17
#@author: U{kldoo <kldscs@gmail.com>}
#@license: LGPL
#@see: 《Advanced Bash-Scripting Guide》
#  	http://wlx.westgis.ac.cn/42/ 
#       http://blog.csdn.net/shrekmu/archive/2006/12/20/1450643.aspx
#@note: 转换文件gb2312编码至UTF-8编码
#
FILE_TYPE=".txt"     #需转码的文件类型,所有文件的话置空
NUM_TYPE=`echo $FILE_TYPE | wc -c`   #文件类型的长度
CODING_1="GB2312"	#原文件编码
CODING_2="UTF-8" 	#转换后的编码
# 所有编码可以在shell下输入 iconv -l 查看
SUFFIX="_tmp" #零时文件的后缀

convert(){
#转换指定文件的编码
	tmp=$file$SUFFIX
	echo "Converting... $file from  $CODING_1 to $CODING_2 ."
	iconv -f $CODING_1 -t $CODING_2 $file -o $tmp
	mv $tmp $file
	#sleep 1
}

foreachd(){
#递归遍历目录  
  for file in $1/*
  do
  # 如果是目录就打印处理，然后继续遍历，递归调用
    if [ -d $file ]
    then
      foreachd $file
    else
      NUM_FILE=`echo $file | wc -c`
      if [ ${file:${NUM_FILE}-${NUM_TYPE}:$NUM_TYPE} == $FILE_TYPE ]
      then
	convert "$file"
      fi
    fi
  done
}

# 遍历转换参数1目录下的文件编码 
if [ $# == 1 ]
then
  foreachd "$1"
else
  echo "argv error!"
fi

